package dao

import (
	"context"
	"fmt"
	"order_srv/basic/config"
	"order_srv/handler/models"

	"gorm.io/gorm"
)

// CreateOrderReview 创建评价
func CreateOrderReview(ctx context.Context, review *models.OrderReview) error {
	// 参数校验
	if review.OrderID == 0 {
		return fmt.Errorf("订单ID不能为空")
	}
	if review.ReviewerID == "" || review.RevieweeID == "" {
		return fmt.Errorf("评价人或被评价人ID不能为空")
	}
	if review.ReviewType == 0 {
		return fmt.Errorf("评价类型不能为空")
	}
	if review.OverallRating < 1 || review.OverallRating > 5 {
		return fmt.Errorf("总体评分必须在1-5之间")
	}

	err := config.DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
		// 1. 创建评价
		if err := tx.Create(review).Error; err != nil {
			return fmt.Errorf("创建评价失败: %w", err)
		}

		// 2. 更新订单的评价状态 (如果订单表有评价状态字段)
		// 例如：tx.Model(&models.Order{}).Where("id = ?", review.OrderID).Update("has_review", 1)

		return nil
	})

	if err != nil {
		return err
	}
	return nil
}